package ar.edu.utn.frsf.tpae.a2012.g04.dominio;

import java.util.Date;
import java.util.List;

import javax.persistence.Entity;


import java.io.Serializable;
import ar.edu.utn.frsf.tpae.a2012.g04.dominio.Movimiento;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "cta")
@Inheritance(strategy = InheritanceType.JOINED)
public class Cuenta  {	
	@Id
	@SequenceGenerator(name = "seq_cta", sequenceName = "seq_cta", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_cta")
	@Column(name = "cta_id")
    protected Integer id;

	@Column(name = "cta_fech_ape")
	@Temporal(TemporalType.TIMESTAMP)
	protected Date fechaApertura;
	
	@Column(name = "cta_nro")
	protected int numero;
	
	@Column(name = "cta_sdo_act")
	protected double saldo;
	
	
	@OneToMany(cascade = CascadeType.ALL, mappedBy = "cuenta")
	protected List<Movimiento> movimientos;
	
	@ManyToOne
	@JoinColumn(name="cta_cli_id")
	protected Cliente cliente;
	
	public Cuenta() {
	}
	
	public Date getFechaApertura() {
		return fechaApertura;
	}
	public void setFechaApertura(Date fechaApertura) {
		this.fechaApertura = fechaApertura;
	}
	public int getNumero() {
		return numero;
	}
	public void setNumero(int numero) {
		this.numero = numero;
	}
	public double getSaldo() {
		return saldo;
	}
	public void setSaldo(double saldo) {
		this.saldo = saldo;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}

	public List<Movimiento> getMovimientos() {
		return movimientos;
	}

	public void setMovimientos(List<Movimiento> movimientos) {
		this.movimientos = movimientos;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public String getSigla() {
		return "Cuenta";
	}


	
	

	

	
}
